#ifndef __ZOMBIE_H__
#define __ZOMBIE_H__

#include <Ogre.h>
#include "MyVehicle.h"
#include "OpenSteer/Proximity.h"
#include "Human.h"

// Mesh del zombie
#define ZOMBIEMESH "ZombieMesh.mesh"

#define MAXDISTANCE 10.0f				// Separación máxima de la Swarm
#define MINDISTANCE 10.0f				// Separación mínima para perseguir
#define MAXRADIUS 5.0f					// Radio de vecinidad
#define MINTIMETOCOLLISION 3.0f                         // Parametro para evitar colisiones

typedef	OpenSteer::
	AbstractProximityDatabase<OpenSteer::AbstractVehicle*> ProximityDatabase;

typedef	OpenSteer::
	AbstractTokenForProximityDatabase<OpenSteer::AbstractVehicle*> ProximityToken;

class ZombieSwarm;

class Zombie : public OpenSteer::MyVehicle {

	private:

		ZombieSwarm* _pSwarm; //< Horda a la que pertenece este zombie

		Human* _pHuman; //< Jugador

		ProximityToken* _proximityToken; //< Token de proximidad

		static OpenSteer::AVGroup _neighbors; //< Zombies próximos

		Ogre::SceneNode* _pZombieNode; //< SceneNode de este zombie

	public:

		Zombie(ZombieSwarm*, Human*, ProximityDatabase&, Ogre::SceneNode*);

		void reset();

		void update(const float, const float);

		OpenSteer::Vec3 steerForZombie(const float);

		void draw();

};

#endif

